﻿<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="utf-8" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>

    <script src="/JS/jQuery.js" type="text/javascript"></script>

    <style type="text/css">
<!--
#MessagePanel {
	position:absolute;
	left:373px;
	top:29px;
	width:388px;
	height:213px;
	z-index:1;
	background-color: #79CAFF;
	border: 3px solid #000000;

}
-->
</style>

<script  type="text/javascript">


 //显示 操作请求的操作对像
 function MessagePanelOperAtion()
 {
        
        //当前是不是可以关闭
        //如果鼠标在层上将不会关闭
        this.CanClose = true;
        
        //当前 exTimeClose 是不是正在执行
        this.IsexTimeCloseRuning = false;
        
        //显示操作 div
        //参数 objid 操作对像的 div 的id
        this.show=function(objid)
        {

         document.getElementById(objid).style.display='block';
            
            //当显示时不能关闭
            this.CanClose=false;
        }
        
        //不显示操作 div
        //参数 objid 操作对像的 div 的id
        this.hidden =function(objid)
        {
                
          //设定当前是可以关闭的
          this.CanClose=true;
        
          //关闭对像
           if(this.CanClose)
           {
                 document.getElementById(objid).style.display='none';
               
           }

           
        }
        
        //在一定的时间内关闭
        this.exTimeClose = function(objid)
        {
            
            //设定当前是可以关闭的
            this.CanClose=true;
            
            //当前的执行状态不正在执行
            if(!this.IsexTimeCloseRuning)
            {
                //设定当前是正在执行的
                this.IsexTimeCloseRuning = true;
                
                //在1秒内关闭  messagePanelOper.IsexTimeCloseRuning=false; //将当前状态改为没有执行
                setTimeout("messagePanelOper.IsexTimeCloseRuning=false;if(messagePanelOper.CanClose){messagePanelOper.hidden('"+objid+"');}" ,1000); 
            
            }
        }

 } 
 
var messagePanelOper = new MessagePanelOperAtion();


//数据表对像
//
function OperDateTable()
{
       //定义数据对像的基本类型
        this.Data = {count:0,Panel:[]};
        
        //添加一条记录
        this.Append= function(carIdObject)
        {
            //添加一条记录
           this.Data.Panel.push({carId:carId});
           //改变当前的长度
           this.Data.count = this.Data.Panel.length;
        }
        
        //删除指定的记录
        this.ReMoveAt = function(num)
        {
            this.Data.Panel.splice(num,1);
            
           //改变当前的长度
           this.Data.count = this.Data.Panel.length;
        }
        
        
        //删除指定的对像
        this.ReMoveBycarId= function(obj)
        {
           for(i=0;i<this.Data.count;i++)
           {
           var s =this.Data.Panel[i];
           
              if(s.carId ==obj.carId)
              {
                this.ReMoveAt(i);
                return true; 
              }
           }

        }
        
}


// js 自己定义事件

function deevent()
{
    this.xxx = function()
    {
        var num =Math.random();
        eventxx(num);
    }
    
    this.eventxx =function(obj)
    {

        xxxfun(obj);
    }   
    
    this.xxxfun = null;
    
    this.OnXXX = function(fun)
    {
        xxxfun =fun;
    }
    
 }
var s =[];
s.shift()
//看看事件能不能执行
var ssddd = new  deevent();

ssddd.OnXXX(function(num)
{
    alert(num);
});

ssddd.xxx();








var messange = new OperDateTable();

for(i=0;i<12;i++)
{
    messange.Append(i);
}

messange.ReMoveAt(5);

//messange.ReMoveByCarId({carId:11,f:''});


messange.Append();

</script>

<script>
//数组操作
var m=["am","bm","cm","dm","em","fm"];

//在关添加一项
m.unshift("gm");

//alert(m);
//删除头一项
m.shift();

//alert(m);
</script>


</head>
<body>

给对象增加一个简单的自定义事件机制
<script type="text/javascript">
function MyObject()
{
	// 保存事件监听函数数组
	this.RunEventListeners = new Array();
}

MyObject.prototype.Run = function()
{
	// 在这里实现Run方法的代码并且触发
	// 下边是激活onrun事件
	for(var i = 0; i < this.RunEventListeners.length; i++)
		this.RunEventListeners[i](this);
}

MyObject.prototype.AddEvent = function(name, listener)
{
	switch(name.toLowerCase())
	{
		case "onrun":
			this.RunEventListeners[this.RunEventListeners.length] = listener;
			break;
		// 还可以在这里增加各种事件，最好判断一下该listener是事已经被添加，以免重复执行，不过这里省了
		default:
			break;
	}
}

function OnRun1(sender)
{
	alert("已经执行了OnRun1事件")
}

function OnRun2(sender)
{
	alert("已经执行了OnRun2事件");
}

var myobj = new MyObject();

// 添加两个监听函数
myobj.AddEvent("onrun", OnRun1);
myobj.AddEvent("onrun", OnRun2);


// 执行Run方法，如无例外，会触发onrun事件
myobj.Run();
</script>

<div id="MessagePanel" onmouseout="messagePanelOper.exTimeClose('MessagePanel');"  
onmouseover=" messagePanelOper.show('MessagePanel');"
onmousedown="messagePanelOper.show('MessagePanel');"
onmouseup="messagePanelOper.show('MessagePanel');"
></div>

<div 
onmouseover=" messagePanelOper.show('MessagePanel');"
onmousedown="messagePanelOper.show('MessagePanel');"
onmouseup="messagePanelOper.show('MessagePanel');"
onmouseout="messagePanelOper.exTimeClose('MessagePanel');"
 >显示菜单</div>
 
<input id="Button1" type="button" value="添加"  onclick=""/>

</body>
</html>








